package com.yjt.common.security;

import java.security.PrivateKey;

import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 安全相关常量
 * 
 * @author hqy 2013-8-26
 * 
 */
public class CertificateConstant {
	private static Logger logger = LoggerFactory.getLogger(CertificateConstant.class);

	/** 私钥证书绝对路径 */
	public static String PFX_FILE_PATH = null;
	/** 私钥证书密码 */
	public static String PFX_PASSWORD = null;
	/** 私钥证书信息 */
	public static PrivateKey PRIVATE_KEY = null;

	/**
	 * 配置中使用的AES算法对称密钥
	 * <p>
	 * 说明：数据库或者其他文件形式存在的配置中不允许有密钥的明文存在，需要通过AES进行加解密
	 * </p>
	 */
	private static String CONFIG_AES_KEY = "YJTAESKEY";
	private static String CONFIG_AES_KEY_ENCODE = null;

	/**
	 * 获取“配置中使用的AES算法对称密钥”
	 * <p>
	 * 说明：数据库或者其他文件形式存在的配置中不允许有密钥的明文存在，需要通过AES进行加解密
	 * </p>
	 * 
	 * @return 以Base64格式编码返回对称密钥
	 */
	public static String getConfigAesKey() {
		if (null != CONFIG_AES_KEY_ENCODE) {
			return CONFIG_AES_KEY_ENCODE;
		}
		
		try {
			byte[] binaryData = CONFIG_AES_KEY.getBytes("utf-8");
			byte[] encodeBytes = Base64.encodeBase64(binaryData);
			CONFIG_AES_KEY_ENCODE = new String(encodeBytes, "utf-8");
		} catch (Exception e) {
			logger.error("获取“配置中使用的AES算法对称密钥”出错：", e);
		}

		return CONFIG_AES_KEY_ENCODE;
	}
}
